City Science Lab San Francisco × MIT Media Lab City Science

Public Safety Pulse

A 7-component Safety Perception Index computed from 715,501 data points across 4 public datasets
The Problem

San Francisco's safety data tells half the story

Crime is declining. But residents don't feel safer. The perception gap — the distance between what the statistics say and what people experience on the street — is invisible to current measurement systems. The City Survey captures it once every two years. Public Safety Pulse would capture it every day, at block level.

"Safety isn't just a statistic; it's a feeling you hold when you're walking down the street."

— Mayor Daniel Lurie, January 2025
63%
Feel Safe (Day)
2023 City Survey
36%
Feel Safe (Night)
2023 City Survey
78%
Feel Safe Downtown
2025 CityBeat Poll
715,501
Data Points Fused
Feb 2025–Feb 2026

What is Public Safety Pulse?

Three components that create a powerful feedback loop:

🔬
Correlation Machine
Takes in data and outputs a trusted measure of safety perception using sound data science
📡
Sentiment Sensors
Network of digital touchpoints collecting direct feedback on how safe people feel
Targeted Interventions
Deploy resources — cleaning, lighting, ambassadors, music — and measure impact
What This Dashboard Demonstrates
The Safety Perception Index below fuses 715,501 data points from 311 disorder reports, SFPD incidents, traffic crashes, and Reddit community sentiment into a single perception score per neighborhood. This is what existing proxy data gets us. Phase 1 adds the missing signal — direct sentiment from real people at specific places and times.
How Perception is Shifting

The City Survey shows historic lows — but newer polls suggest a turning point

The 2023 City Survey (most recent) shows perception at its lowest point since 1996. But the 2025 CityBeat poll shows improvement among frequent downtown visitors. Without Public Safety Pulse, we can't see how this varies by block, time of day, or in response to interventions.

Animated Perception Signal

How Safety Perception Shifts Through the Day

Every point on this map is a real 311 report, SFPD incident, or traffic crash — weighted by its impact on perception. Encampments and violent crime produce stronger heat signals than graffiti or property offenses. Press play to watch hotspots migrate through a typical day. Neighborhood labels show SPI scores for context.

Time Window
1pm–5pm
What Decision-Makers See
The heat signature concentrates in Tenderloin/SoMa during all hours but migrates — the Mission corridor heats up in the evening, the Financial District cools off after office hours. With Phase 1 sentiment data, each heat zone would include a real-time perception score, enabling alerts like: "SPI in Tenderloin dropped below 20 in the 5–9pm window — dispatch ambassador team."

Concept: Real-Time Perception Alerts

With Phase 1 data flowing, the dashboard would generate automatic alerts when perception drops below thresholds:

⚠️
SPI Alert: Tenderloin dropped to 15.2 (5pm–9pm window)
Disorder reports up 40% vs last week. Encampment reports concentrated on Turk & Taylor. 3 new graffiti reports on Golden Gate Ave.
→ Recommended: Deploy ambassador team to Turk/Taylor corridor. Dispatch cleaning crew to Golden Gate Ave.
📈
SPI Improvement: Union Square rose to 68.4 (9am–1pm window)
Disorder reports down 25% since ambassador deployment last Monday. Encampment reports at lowest level in 6 months.
→ Signal: Maintain current resource allocation. Share results with CBD stakeholders.
Note: These alerts are mockups showing Phase 1 capability. The current dashboard cannot generate real-time alerts because it uses batch data (311/SFPD), not live sentiment. Phase 1's digital touchpoints would enable true real-time scoring.
Computed Metric

Safety Perception Index

SPI fuses 7 data signals into a single 0–100 score per neighborhood. Higher = safer feeling. This is a proxy estimate from publicly available data. Phase 1 would validate and calibrate these scores against direct perception measurements.

SPI by Neighborhood

Disorder–Crime Divergence

Positive = more disorder than crime (perception problem). Negative = more crime than disorder (hidden risk).

Temporal Analysis

Disorder by Time of Day

Darker cells = more reports per month. This is the variation a biennial survey cannot capture.

311 Disorder Categories

SFPD Crime Categories

Monthly Trends

Phase 2 Vision

The Correlation Engine

Once Phase 1 provides direct perception data, the correlation engine identifies which observable factors actually predict how safe people feel. This replaces assumed weights with empirical ones.

How It Works

Feed all available data into a regression model with direct sentiment as the dependent variable. The model reveals which levers — cleaning, lighting, ambassador presence, encampment density — most strongly correlate with perception. Then test interventions and measure impact.

Preliminary Correlation Signals

Based on current data: neighborhoods with higher values of these indicators tend to have lower SPI scores. These are associations, not causal findings — Phase 1 enables causal testing via interventions.

Direct Indicators

Likely to directly measure or predict sentiment:

  • 311 call volume and category composition
  • 911 call volume (not yet integrated)
  • BART safety surveys (not yet available)
  • Annual city surveys
  • Nextdoor safety-related posts
  • Visitor/SFTravel safety surveys
  • Phase 1: Direct NPS from digital touchpoints

Indirect Indicators

Known correlates from urban research:

  • Visible drug use presence
  • Amount of visible trash/waste
  • Number of unoccupied storefronts
  • Defiled or damaged public locations
  • Unhoused individuals in high-traffic areas
  • Streetlight outages and darkness
  • Pedestrian/cyclist crash density

Possible Interventions to Test

👁️ Sights
Clean streets/sidewalks, remove graffiti, bright signage and lighting, deploy ambassadors optimally
🔊 Sounds
Deploy street musicians, play recorded music in key corridors
🌸 Smells
Pleasant aromas in areas associated with bad smells
🤝 Civic Signals
Respond quickly to issues, greet visitors, visible service presence
Measurement Feedback Loop
Collect high-frequency sentiment → Correlate with observable conditions → Intervene with targeted resources → Re-measure to assess impact → Optimize allocation based on what actually works. This is how you turn data into measurably safer streets.
Transparency

Data & Methods

Data Sources

SourceRecordsSPI RoleWeight
311 Requests vw6y-z8j6626,911Disorder density + salience + temporal + resolution25% + 13% + 13% + 15%
SFPD Incidents wg3w-h78385,804Crime severity density18%
Traffic Crashes ubvf-ztfx2,467Pedestrian safety8%
Reddit r/sanfrancisco319Community sentiment baseline8%

SPI Formula

SPI = 100 − scaled(25%×D + 18%×C + 13%×DC + 8%×PS + 13%×TR + 8%×CS + 15%×RR)
D = z_score( Σ(311_cases × e^(-days/180)) / area_km² )
C = z_score( Σ(SFPD × severity_weight × e^(-days/180)) / area_km² )
DC = z_score( mean_salience_weight per neighborhood )
PS = z_score( crashes / area_km² )
TR = z_score( 0.6 × night_ratio + 0.4 × trend_ratio )
CS = keyword_sentiment from Reddit (neighborhood-specific where possible)
RR = z_score( median_311_resolution_days )

Additional Data for Phase 1 Integration

DatasetAccessSignalPriority
BART Station Exitsbart.gov (manual download)Foot traffic avoidance — declining exits = people avoiding the areaHigh
Muni Ridershipsfmta.comTransit confidence indicatorMedium
Yelp/Google ReviewsYelp Fusion API (free)Direct safety sentiment from real visitors at specific locationsHigh
Business VacancyCBRE/Cushman & Wakefield quarterlyEmpty storefronts signal neighborhood declineMedium
Streetlight OutagesAlready in 311 data (needs extraction)Lighting = strongest single perception predictorHigh
Google TrendsFree APISearch volume for "[neighborhood] + safety" keywordsMedium
City Survey MicrodataController's Office requestEnables regression-based weight calibrationCritical
Replica/SafeGraphCommercial (MIT partnership)Mobility patterns — where people avoid walkingHigh
Pedestrian CountsSFMTA automated countersFoot traffic decline = avoidance behaviorMedium
Nextdoor PostsPartnership neededHyperlocal community safety discussionMedium

Methodological Improvements for Phase 1

Current approach: Weighted z-score fusion with assumed weights from literature.
Phase 1 upgrade: Principal Component Analysis to discover which signals co-vary with direct perception → Bayesian hierarchical regression for weight calibration → spatial autocorrelation (Moran's I) to account for neighboring block influence → temporal autoregression for trend prediction.
Research basis: Wilson & Kelling (1982) Broken Windows, Sampson & Raudenbush (1999) Disorder Observation, Salesses et al. (2013) MIT Place Pulse, Naik et al. (2014) MIT Streetscore, Welsh & Farrington (2008) Lighting & Crime.

Known Limitations

Reporting bias: 311 reflects who reports. Engaged neighborhoods over-report.
Survival bias: Areas people avoid generate fewer data points.
No direct perception: Everything here is inferred from proxy data.
Reddit: Only 319 posts, not geocoded.
Weights: Not empirically calibrated. Phase 1 fixes this.

Everything you just saw is inferred from proxy data.

311 captures what people report. Crime data captures what police file. Areas people avoid appear safe. We need the actual signal — how people feel, in the moment, at the places they actually are.

The Solution: Low-Friction Sentiment Capture

"Right now, how does the surrounding area feel to you?" — Comfortable / Neutral / Uncomfortable. Through existing digital touchpoints. Anonymous. Aggregated by place and time.

Distribution Channels

Offices & Buildings
Employee check-in via Envoy, workplace comms, visitor sign-in
Stores & Restaurants
Point of sale — Square, Toast, Clover, Apple Pay, SNAP, Google Wallet
Transit
BART / Muni, Uber / Lyft / Waymo, Google Maps, parking apps
Location Apps
AllTrails, Strava, Yelp, feedback QR kiosks
$150–200K
Phase 1
6-month pilot
6 months
Duration
Define → Build → Capture → Evaluate
50K/mo
Target Responses
Ramp from 5K

Partner with us to validate whether direct sentiment can fill the gap.

City Science Lab San Francisco × MIT Media Lab City Science